package com.m.IO.bytes;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * 文件不存在可以帮助自动创建，文件加并不会进行创建
 * write()输出一个字节或者是一组字节
 * read() 返回一个字符的int类型或者是一个字节数组，没有元素放回-1
 * 注：在Java路径的书写中需要  \  写为   \\
 *
 * @author Mc.Chai
 * @program: Java基础
 * @create 2021-11-20-16:19 16:19
 */
public class TestStream {
    public static void main(String[] args) throws IOException {
        FileOutputStream fileOutputStream = new FileOutputStream("Target.txt");
        fileOutputStream.write(65); //输出一个字节
        byte[] b=new byte[]{'c','h','a','i','h','e','c'};
        fileOutputStream.write(b);     //输出一组字节
        FileInputStream fileInputStream = new FileInputStream("Target.txt");
        /*while (true){
            int n=fileInputStream.read();
            System.out.print((char)n);
            if (n==-1){
                break;
            }
        }*/
        /**
         * 每一次进行读取一组空间的字符
         * count为本次所读取值的个数，但是最后一次并不会填满，有可能存在上一次存在的字符，没有字符返回-1
         * for循环的个数根据每次所读取的个数来决定的
         * 注：一定要进行if判断结束循环
         * */
        while (true){
            byte[] cache=new byte[4];   //创建一个长度为4的数据，作为读取时的缓存
            int count=fileInputStream.read(cache);
            for (int i = 0; i < count; i++) {
                System.out.print((char)cache[i] +"\t");
            }
            if (count==-1){
                break;
            }
            System.out.println();
        }
    }
}
